{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-06-06T09:52:19.643175Z",
     "start_time": "2024-06-06T09:52:19.428522Z"
    }
   },
   "source": [
    "from sklearn.datasets import load_digits\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "#载入数据\n",
    "x, y = load_digits(return_X_y=True)\n",
    "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=202406)  #划分训练集与测试集\n",
    "\n",
    "#进行标准化操作\n",
    "scaler = StandardScaler()\n",
    "x_train_scaled = scaler.fit_transform(x_train)\n",
    "#使用训练数据的参数进行标准化\n",
    "x_test_scaled = scaler.transform(x_test)\n",
    "print(x_train_scaled.shape, x_test_scaled.shape, y_train.shape, y_test.shape)\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1437, 64) (360, 64) (1437,) (360,)\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-06-06T09:52:22.046176Z",
     "start_time": "2024-06-06T09:52:21.762397Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.svm import SVC\n",
    "\n",
    "#构建和训练模型\n",
    "classifier = SVC(kernel='linear', random_state=202406)\n",
    "classifier.fit(x_train_scaled, y_train)\n"
   ],
   "id": "1813110de89227e0",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(kernel='linear', random_state=202406)"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SVC(kernel=&#x27;linear&#x27;, random_state=202406)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(kernel=&#x27;linear&#x27;, random_state=202406)</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-06-06T09:53:19.128754Z",
     "start_time": "2024-06-06T09:53:19.081380Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "\n",
    "#进行模型评估\n",
    "y_pred = classifier.predict(x_test_scaled)\n",
    "acc = classifier.score(x_test_scaled, y_test)\n",
    "print(f\"准确率:{acc * 100:.2f}%\")\n",
    "print(\"-----分类报告如下-----\")\n",
    "print(classification_report(y_test, y_pred))\n",
    "print(\"混淆矩阵如下\")\n",
    "cm = confusion_matrix(y_test, y_pred)\n",
    "print(cm)"
   ],
   "id": "10090de3de9abf8c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "准确率:98.06%\n",
      "-----分类报告如下-----\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        30\n",
      "           1       0.94      1.00      0.97        33\n",
      "           2       0.98      1.00      0.99        42\n",
      "           3       0.97      0.97      0.97        35\n",
      "           4       1.00      1.00      1.00        35\n",
      "           5       0.97      0.97      0.97        38\n",
      "           6       1.00      0.97      0.99        36\n",
      "           7       0.97      0.97      0.97        40\n",
      "           8       0.97      0.95      0.96        38\n",
      "           9       1.00      0.97      0.98        33\n",
      "\n",
      "    accuracy                           0.98       360\n",
      "   macro avg       0.98      0.98      0.98       360\n",
      "weighted avg       0.98      0.98      0.98       360\n",
      "\n",
      "混淆矩阵如下\n",
      "[[30  0  0  0  0  0  0  0  0  0]\n",
      " [ 0 33  0  0  0  0  0  0  0  0]\n",
      " [ 0  0 42  0  0  0  0  0  0  0]\n",
      " [ 0  0  1 34  0  0  0  0  0  0]\n",
      " [ 0  0  0  0 35  0  0  0  0  0]\n",
      " [ 0  0  0  0  0 37  0  1  0  0]\n",
      " [ 0  1  0  0  0  0 35  0  0  0]\n",
      " [ 0  0  0  0  0  1  0 39  0  0]\n",
      " [ 0  1  0  1  0  0  0  0 36  0]\n",
      " [ 0  0  0  0  0  0  0  0  1 32]]\n"
     ]
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-06-06T09:53:27.308504Z",
     "start_time": "2024-06-06T09:53:26.337574Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "\n",
    "# 绘制混淆矩阵的热力图\n",
    "plt.figure(figsize=(10, 10))\n",
    "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=np.arange(10), yticklabels=np.arange(10))\n",
    "plt.xlabel('Predicted Label')\n",
    "plt.ylabel('True Label')\n",
    "plt.title('Confusion Matrix')\n",
    "plt.show()"
   ],
   "id": "5d07973833a10136",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-06-05T10:15:27.777598Z",
     "start_time": "2024-06-05T10:15:27.646406Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "#随机展示一个样例\n",
    "index = np.random.randint(0, len(x_test))\n",
    "sample = x_test[index]\n",
    "print(sample)\n",
    "sample = sample.reshape(8, 8)\n",
    "plt.imshow(sample, cmap=plt.cm.gray_r, interpolation='nearest')\n",
    "plt.title(f\"True Label:{y_test[index]},Predicted Label:{y_pred[index]}\")\n",
    "plt.show()"
   ],
   "id": "a45681e71c2b1f83",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.  0.  3. 15. 16. 16.  5.  0.  0.  0. 10. 12. 10. 16.  6.  0.  0.  2.\n",
      " 15.  2.  3. 16.  1.  0.  0.  0.  2.  3. 10. 13.  2.  0.  0.  0.  3. 16.\n",
      " 16. 16. 10.  0.  0.  0.  0. 12. 13.  7.  1.  0.  0.  0.  1. 16.  6.  0.\n",
      "  0.  0.  0.  0.  5. 14.  2.  0.  0.  0.]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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y5cva/DgwVZyXLx4UZs3b9bcuXP17LPPeubn5uZWukxubq7atWvnuX306FG53W7PIa3ExEQZY9SuXbsaKcBrvfnmmwoKCtLPf/7zGl93ZRITE7Vp0yb17du3yjcNCQkJkn78Hd1xxx2e+efOnatwJdf1tiFJBw8erPL/u7LDZbWRsbq2bt2qCxcu6L333vO6CKP8ar1rnTp1qsLl4EeOHJEkr8fVZ599pkGDBlXrkKGvVq5cqcTERM/hYVSOczC3uMTExArnT5YuXVphDyY1NVU7d+5UdnZ2hXUUFBTo6tWrN5WjfA/DGOM1v6qr08ovky23cOFCST/+jYn04x9FBgcHa+7cuRXWa4yp9PLnclVdpvzDDz/onXfeUb9+/dSmTZsq11OTUlNTVVZWpnnz5lX42dWrVz1vFgYPHqz69etr4cKFXve9Olf73XPPPWrXrp0WLFhQ4c3HX66r/EX42jG1kbG6rve4Ki0t1b//+79fd/zVq1e1ZMkSr7FLlixRTEyMkpOTJf14/7755hu9+uqrFZb/7rvvVFxcXGWmqi5T3rdvn7744otafdMSyNiDucVNmjRJU6ZM0V//9V9ryJAh+uyzz5Sdna1mzZp5jfvVr36lDz74QCNHjtT48eOVnJys4uJiHThwQO+++66OHz9eYZlrnTt3Ts8991yF+e3atdO4cePUv39//cu//It++OEHtWrVSn/84x8rfacp/fgu9OGHH9ZPfvIT7dy5UytWrNDPf/5zdevWTdKP5fncc88pIyNDx48f16OPPqqIiAjl5eVpzZo1+sUvfqGnnnqq0vVXdZlydna2Lly4UOVhjPLLdJctW1Zjn0c1YMAATZ48WZmZmdq/f7+GDh2q+vXrKzc3V++8845efvll/exnP1NMTIyeeuopZWZmauTIkRo+fLj27dun9evX3/D/qV69esrKytKoUaPUvXt3TZgwQS1bttSXX36pQ4cOed5klL/gTps2TcOGDVNwcLDGjBlTKxn/0p49e677uBo4cKDuv/9+RUdHKy0tTdOmTVNQUJDeeOONCm84ysXFxenFF1/U8ePH1bFjR7399tvav3+/li5d6jln9zd/8zdavXq1pkyZoi1btqhv374qKyvTl19+qdWrVys7O7vKw59VXabs70Ujty1nLl67fVV2mXJllwiXlZWZp59+2jRr1sw0aNDADBs2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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 33
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
